COMANDO con el PUERTO PARALELO

Patita      Señal   Función       Conexión      Registro     Bit              Estado              
1 STB              Strobe I/O  Control 0 Y
2 DO Bit 0 O Datos 0 N
3 D1 Bit 1 O Datos 1 N
4 D2 Bit 2 O Datos 2 N
5 D3 Bit 3 O Datos 3 N
6 D4 Bit 4 O Datos 4 N
7 D5 Bit 5 O Datos 5 N
8 D6 Bit 6  O Datos 6 N
9 D7 Bit 7 O Datos 7 N
10 ACK Acknowledge I Status 6 N
11 BSY PrinterBusy I Status 7 Y
12 PE PaperEnd I Status 5 N
13 SEL PrinterSelect I Status 7 N
14 AUTOLF AutomLineFeed I/O Control 4 N
15 ERR Error I Status 3 N
16 INIT InicialicePrinter I/O Control 2 N
17 SELIN SelectPrinter I/O Control 3 Y
18 -  25 GND Ground        

 

Datos  BASE Status BASE + 1 Control BASE + 2
3BCH  3BDH  3BEH 
378H 379H

 

37AH
278H 279H 27AH

 

Soldamos un cable en cada terminal cuidando que queden bien aislados entre si y con respecto a chasis

 

Para no mezclar datos manejemos en lo sucesivo el numero del BIT

 

Existen dos formas para ello

La segunda forma es 

Además queremos que esto se repita N cantidad de veces, entonces escribimos

En una maquina de 266 Mc de velocidad contar el numero 400000 demora aprox. 1 segundo

Si deseamos leer HOLA programamos

Para repetirlo indefinidamente escribimos

Los comandos do y loop repiten los mandos encerrados entre ellos

para detener el programa se oprimen las teclas CONTROL Y PAUSA  simultáneamente

 

El grafico mostrado acopla la salida del puerto paralelo a una carga de C Continua en este

caso un foco. El circuito permite manejar cargas de hasta 1 Amper y 10-12 voltios

El optoacoplador es 4N47 y el transistor TIP 31

 

En este caso la salida es a un rele cuyo contacto puede ser NA-NC O ambos y

conectar un artefacto de 220 V c Alternada con los cuidados necesarios

Para los  que se confunden las conexiones el circuito en diagrama

El optoacoplador puede ser 4N35-4N36-4N37

Por si interesa utilizar otro lenguaje de programación veamos en C

#include <dos.h>
void main ()
{
int puerto = 0x378;
int control = 0;
clrscr();
printf("se inicia el comando de puerto");
outportb(puerto,control +2);
sleep (3);
outportb(puerto,control + 8);
}

 

Cambiando el numero después de control cambiamos el bit o la combinación
 de ellos que deseamos
Sleep controla segundos en este caso 3
Los datos en rojo lo podemos repetir con distintos bit y distintos tiempos
Si deseamos tiempos mas cortos reemplazamos sleep por delay que mide milésimos de
segundos

 

Si controlan el lenguaje V Basic 5 mostramos un programa
Los command son lo ejecutores
los shape círculos rojos que se encienden
Y si no lo tienen es necesario bajar un archivo que se carga en Windows/System 
 o system 32 y  hace que el puerto paralelo responda a ordenes desde V Basic

# if win32 then

Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (byvalPortAddress As Integer) As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal portaddress As Integer, ByVal value As Integer)
#End If

Private Sub Command1_Click()
Out &H378, 1
Shape1.FillStyle = 0
End Sub

Private Sub Command2_Click()
Out &H378, 2
Shape2.FillStyle = 0
End Sub

Private Sub Command3_Click()
Out &H378, 4
Shape3.FillStyle = 0
End Sub

Private Sub Command4_Click()
Out &H378, 8
Shape4.FillStyle = 0
End Sub

Private Sub Command5_Click()
Out &H378, 16
Shape5.FillStyle = 0
End Sub

Private Sub Command6_Click()
Out &H378, 32
Shape6.FillStyle = 0
End Sub

Private Sub Command7_Click()
Out &H378, 64
Shape7.FillStyle = 0
End Sub

Private Sub Command8_Click()
Out &H378, 128
Shape8.FillStyle = 0
End Sub

Private Sub Command9_Click()
Out &H378, 0
Shape9.FillStyle = 0
Shape1.FillStyle = 1
Shape2.FillStyle = 1
Shape3.FillStyle = 1
Shape4.FillStyle = 1
Shape5.FillStyle = 1
Shape6.FillStyle = 1
Shape7.FillStyle = 1
Shape8.FillStyle = 1
End Sub

Private Sub Form_Load()
a# = Inp(&H378)
Print a#
End Sub

ARCHIVOS DE CONTROL PARA BAJAR

Sin uno de estos archivos VB no reconoce el puerto paralelo

Puerto paralelo 16 bit

 

Puerto paralelo 32 bit